package com.zzyl.common.core.page; // 定义包路径，将该类归类到common模块的核心分页包中

import java.io.Serializable; // 导入Serializable接口，用于支持对象序列化
import java.util.List; // 导入List接口，用于处理集合数据

// 导入Swagger相关注解
import io.swagger.annotations.ApiModel; // 导入Swagger模型注解，用于描述整个数据模型
import io.swagger.annotations.ApiModelProperty; // 导入Swagger模型属性注解，用于描述模型的各个属性

/**
 * 表格分页数据对象
 * 用于封装分页查询结果，包含总记录数、列表数据、状态码和消息内容
 * 
 * @author ruoyi
 */
@ApiModel(description = "表格分页数据对象") // Swagger注解，描述该实体类的作用
public class TableDataInfo<T> implements Serializable // 泛型类实现Serializable接口，支持序列化
{
    private static final long serialVersionUID = 1L; // 序列化版本标识符，用于序列化兼容性检查

    /** 总记录数 */
    @ApiModelProperty(value = "总记录数") // Swagger注解，描述该字段的含义
    private long total; // 声明总记录数属性

    /** 列表数据 */
    @ApiModelProperty(value = "列表数据") // Swagger注解，描述该字段的含义
    private List<T> rows; // 声明列表数据属性，使用泛型T表示数据类型

    /** 消息状态码 */
    @ApiModelProperty(value = "消息状态码") // Swagger注解，描述该字段的含义
    private int code; // 声明消息状态码属性

    /** 消息内容 */
    @ApiModelProperty(value = "消息内容") // Swagger注解，描述该字段的含义
    private String msg; // 声明消息内容属性

    /**
     * 表格数据对象
     * 无参构造函数，用于创建空的分页数据对象
     */
    public TableDataInfo() // 无参构造函数
    {
    }

    /**
     * 分页
     * 有参构造函数，用于创建包含数据的分页对象
     * 
     * @param list 列表数据
     * @param total 总记录数
     */
    public TableDataInfo(List<T> list, long total) // 有参构造函数，接收列表数据和总记录数
    {
        this.rows = list; // 初始化列表数据
        this.total = total; // 初始化总记录数
    }

    // 以下为各属性的getter和setter方法
    public long getTotal() // 获取总记录数的方法
    {
        return total;
    }

    public void setTotal(long total) // 设置总记录数的方法
    {
        this.total = total;
    }

    public List<T> getRows() // 获取列表数据的方法
    {
        return rows;
    }

    public void setRows(List<T> rows) // 设置列表数据的方法
    {
        this.rows = rows;
    }

    public int getCode() // 获取消息状态码的方法
    {
        return code;
    }

    public void setCode(int code) // 设置消息状态码的方法
    {
        this.code = code;
    }

    public String getMsg() // 获取消息内容的方法
    {
        return msg;
    }

    public void setMsg(String msg) // 设置消息内容的方法
    {
        this.msg = msg;
    }
}